﻿using System;
using System.Collections.Generic;
using System.Text;

namespace C4F.DevKit.Bluetooth.ServiceAndDeviceDiscovery
{

    /// <summary>
    /// Represents the operations that can be performed by a call 
    /// to WSASetService.
    /// </summary>
    public enum WsaSetServiceOp
    {

        /// <summary>
        /// Registers the service
        /// </summary>
        Register = 0,

        /// <summary>
        /// Unregisters the service
        /// </summary>
        DeRegister,

        /// <summary>
        /// Deletes the service
        /// </summary>
        Delete

    }

    /// <summary>
    /// Represents the specific data type of the value returned in a call 
    /// to BluetoothSdpGetElementData
    /// </summary>
    public enum SdpSpecificType
    {

        /// <summary>
        /// Represents No type.
        /// </summary>
        SdpStNone = 0x0000,

        /// <summary>
        /// Represents a byte datatype.
        /// </summary>
        SdpStUint8 = 0x0010,

        /// <summary>
        /// Represents ushort datatype.
        /// </summary>
        SdpStUint16 = 0x0110,

        /// <summary>
        /// Represents uint datatype.
        /// </summary>
        SdpStUint32 = 0x0210,

        /// <summary>
        /// Represents ulong datatype.
        /// </summary>
        SdpStUnit64 = 0x0310,

        /// <summary>
        /// Represents SdpUlargeInteger16 type.
        /// </summary>
        SdpStUint128 = 0x0410,

        /// <summary>
        /// Represents sbyte datatype.
        /// </summary>
        SdpStInt8 = 0x0020,

        /// <summary>
        /// Represents short datatype.
        /// </summary>
        SdpStInt16 = 0x0120,

        /// <summary>
        /// Represents int datatype.
        /// </summary>
        SdpStInt32 = 0x0220,

        /// <summary>
        /// Represents long datatype.
        /// </summary>
        SdpStInt64 = 0x0320,

        /// <summary>
        /// Represents SdpLargeInteger16 type.
        /// </summary>
        SdpStInt128 = 0x0420,

        /// <summary>
        /// Represents ushort datatype.
        /// </summary>
        SdpStUuid16 = 0x0130,

        /// <summary>
        /// Represents uint datatype.
        /// </summary>
        SdpStUuid32 = 0x0220,

        /// <summary>
        /// Represents Guid datatype.
        /// </summary>
        SdpStUuid128 = 0x0430

    }

    /// <summary>
    /// Enumeration for SdpType.
    /// </summary>
    public enum SdpType
    {

        /// <summary>
        /// Represents No type.
        /// </summary>
        SdpTypeNil = 0x00,

        /// <summary>
        /// Represents Uint type.
        /// </summary>
        SdpTypeUint = 0x01,

        /// <summary>
        /// Represents int type.
        /// </summary>
        SdpTypeInt = 0x02,

        /// <summary>
        /// Represents Uuid type.
        /// </summary>
        SdpTypeUuid = 0x03,

        /// <summary>
        /// Represents String type..
        /// </summary>
        SdpTypeString = 0x04,

        /// <summary>
        /// Represents Boolean type.
        /// </summary>
        SdpTypeBoolean = 0x05,

        /// <summary>
        /// Represents Sequence type.
        /// </summary>
        SdpTypeSequence = 0x06,

        /// <summary>
        /// Represents Alternative type.
        /// </summary>
        SdpTypeAlternative = 0x07,

        /// <summary>
        /// Represents Url type.
        /// </summary>
        SdpTypeUrl = 0x08,

        /// <summary>
        /// Represents Container type.
        /// </summary>
        SdpTypeContainer = 0x20

    }

    /// <summary>
    /// Represents the data type of the service id.
    /// </summary>
    public enum ServiceIdType
    {
        /// <summary>
        /// Represents No type.
        /// </summary>
        TypeNil = 0,

        /// <summary>
        /// Represents ushort type.
        /// </summary>
        TypeUint16 = 1,

        /// <summary>
        /// Represents uint type.
        /// </summary>
        TypeUint32 = 2,

        /// <summary>
        /// Represents Uuid type.
        /// </summary>
        TypeUuid = 3,

    }

}
